The present disclosure relates in general to user interface design, and in particular to user interface controls that facilitate the specification of data hierarchies.
Many data sets that are represented in a “flat” (i.e., non-hierarchical) format can be reorganized in a hierarchical manner. For example, consider a table of employee salary data, where each row in the table includes values for attributes “employee name,” “employee salary,” “manager name,” “department,” and “organization.” In this table, various rows having distinct values for “employee name” can share a common value for “manager name.” Further, various rows having distinct values for “employee name” can share a common value for “department.” Yet further, various rows having distinct values for “department” can share a common value for “organization.” Thus, although the table is a flat list of records, the salary data in the table can be reorganized (e.g., summarized) hierarchically with respect to an ordered sequence of attributes (e.g., organization>department>manager name). This ordered sequence of attributes is referred to herein as a “data hierarchy.”
There are a number of software applications that allow users to specify a data hierarchy for a data set for the purpose of visualizing the data set according to the hierarchy. For example, Microsoft Excel (developed by Microsoft Corporation) provides tools known as pivot tables and pivot charts. Using these tools, a user can specify a data hierarchy for a spreadsheet table by dragging and dropping column headers of the table to various locations. The data in the table is then displayed (e.g., via another table or via a chart) according to the specified data hierarchy.
Although the drag-and-drop functionality described above can be a convenient mechanism for specifying a data hierarchy, it is also associated with several well-known usability issues. For example, there are difficulties informing users that the drag-and-drop functionality exists, difficulties informing users of what can be dragged and where the draggable objects can be dropped, difficulties informing users of drop-related errors, and difficulties providing accessible alternatives to drag-and-drop for users that cannot use a mouse (or other types of pointing devices required to perform drag-and-drop operations). Further, implementing drag-and-drop functionality in an application can be difficult from a development perspective since it typically requires more complex coding than other types of user interface interactions.